/**
 * checkboxとradio部品のチェックされている項目の親LABELのclass属性を操作する。
 * 親LABELとして認識されるには（１）対象部品をLABELで囲うか、（２）またはfor属性でひもづけする。
 * <label>bbb<input type="checkbox" class="inputLabelDecorate"></label>
 * <label for="ccc">ccc</label><input type="checkbox" class="inputLabelDecorate" id="ccc">
 *
 *
 */
//$(function() {
//	var targetInputClassName = "inputLabelDecorate";
//	var toggleClassName = "inputLabelDecorate";
//
//	$('input.' + targetInputClassName + ':checked').each(function() {
//		$(this).parent("label").toggleClass(toggleClassName, true);
//		$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName, true);
//	});
//
//	$('input.' + targetInputClassName).click(function(e) {
//		var type = e.target.type;
//		var chk = $(this).prop('checked');
//		var name = $(this).attr('name');
//		/** for checkbox */
//		if(type == 'checkbox') {
//			if(chk == true) {
//				$(this).parent("label").toggleClass(toggleClassName, true);
//				$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName,true);
//			} else {
//				$(this).parent("label").toggleClass(toggleClassName, false);
//				$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName,false);
//			}
//		} else if(type == 'radio') {
//			/** for radio */
//			var allRadio = $("input[name=" + name + "]");
//			allRadio.parent("label").toggleClass(toggleClassName, false);
//			for(i=0; i<allRadio.size(); i++){
//				$(this).toggleClass(toggleClassName, false);
//				$('label[for=' + allRadio.get(i).id + ']').toggleClass(toggleClassName,false);
//			}
//			if(chk == true) {
//				$(this).parent("label").toggleClass(toggleClassName, true);
//				$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName,true);
//			}
//		}
//	})
//});

(function( $ ){

	  $.inputLabelDecorate = function( options ) {

		//if no parameter these are default
//		var targetInputClassName = 'inputLabelDecorate';
//		var toggleClassName = 'inputLabelDecorate';

	    // set defaults from parameter
	    var defaults = {
			targetInputClassName : 'inputLabelDecorate',
			toggleClassName : 'inputLabelDecorate'
	    }

	    var options=$.extend(defaults, options);

	    var targetInputClassName = options.targetInputClassName;
	    var toggleClassName = options.toggleClassName;

		$('input.' + targetInputClassName + ':checked').each(function() {
			$(this).parent("label").toggleClass(toggleClassName, true);
			$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName, true);
		});

		$('input.' + targetInputClassName).click(function(e) {
			var type = e.target.type;
			var chk = $(this).prop('checked');
			var name = $(this).attr('name');
			/** for checkbox */
			if(type == 'checkbox') {
				if(chk == true) {
					$(this).parent("label").toggleClass(toggleClassName, true);
					$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName,true);
				} else {
					$(this).parent("label").toggleClass(toggleClassName, false);
					$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName,false);
				}
			} else if(type == 'radio') {
				/** for radio */
				var allRadio = $("input[name=" + name + "]");
				allRadio.parent("label").toggleClass(toggleClassName, false);
				for(i=0; i<allRadio.size(); i++){
					$(this).toggleClass(toggleClassName, false);
					$('label[for=' + allRadio.get(i).id + ']').toggleClass(toggleClassName,false);
				}
				if(chk == true) {
					$(this).parent("label").toggleClass(toggleClassName, true);
					$('label[for='+$(this).attr('id')+']').toggleClass(toggleClassName,true);
				}
			}
		})

	  };
	})( jQuery );